// 引入 mongoose 建模工具模块
var mongoose = require('mongoose')
var Schema = mongoose.Schema
var ObjectId = Schema.Types.ObjectId
// 模式
var MovieSchema = new mongoose.Schema({
    doctor: String,
    title: String,
    language: String,
    country: String,
    summary: String,
    flash: String,
    poster: String,
    pv: {
        type: Number,
        default: 0
    },
    category: {
        type: ObjectId,
        ref: 'Category'
    },
    year: Number,
    meta: {
        createAt: {
            type: Date,
            default: Date.now()
        },
        updateAt: {
            type: Date,
            default: Date.now()
        }
    }
})
// 每次存贮数据之前都会调用的方法
MovieSchema.pre('save', function (next) {
   if (this.isNew) { // 判断数据是否是新加的
       // 创建时间和更新时间设置为当前时间
       this.meta.createAt = this.meta.updateAt = Date.now()
   } else {
       // 已有数据只更新更新时间 updateAt
       this.meta.updateAt = Date.now()
   }
   next()
})
// 添加静态方法 只有经过 model实例化后才会有
MovieSchema.statics = {
    // 获取所有数据
    fetch: function (cb) {
        return this
            .find({})
            .sort('meta.updateAt')
            .exec(cb)
    },
    findById: function (id, cb) {
        return this
            .findOne({_id: id})
            .sort('meta.updateAt')
            .exec(cb)
    }
}
module.exports = MovieSchema